package com.py.credit.dao;

import com.py.credit.entity.Statistics;
import com.py.credit.entity.StatisticsCount;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface StatisticsDao {

    /**
     * 法人惩戒数量
     *
     * @param type
     * @param startTime
     * @param endTime
     * @return
     */
    List<Statistics> selectFrCjInfo(@Param(value = "type") String type,
                                    @Param(value = "startTime") String startTime,
                                    @Param(value = "endTime") String endTime);

    /**
     * 自然人惩戒数量
     *
     * @param type
     * @param startTime
     * @param endTime
     * @return
     */
    List<Statistics> selectZrrCjInfo(@Param(value = "type") String type,
                                     @Param(value = "startTime") String startTime,
                                     @Param(value = "endTime") String endTime);

    /**
     * 法人激励数量
     *
     * @param type
     * @param startTime
     * @param endTime
     * @return
     */
    List<Statistics> selectFrJlInfo(@Param(value = "type") String type,
                                    @Param(value = "startTime") String startTime,
                                    @Param(value = "endTime") String endTime);

    /**
     * 自然人激励数量
     *
     * @param type
     * @param startTime
     * @param endTime
     * @return
     */
    List<Statistics> selectZrrJlInfo(@Param(value = "type") String type,
                                     @Param(value = "startTime") String startTime,
                                     @Param(value = "endTime") String endTime);

    /**
     * 法人6个月惩戒数量
     *
     * @param type
     * @param startTime
     * @param endTime
     * @return
     */
    List<Statistics> selectFrSixMorthCjInfo(@Param(value = "type") String type,
                                            @Param(value = "startTime") String startTime,
                                            @Param(value = "endTime") String endTime);

    /**
     * 自然人6个月惩戒数量
     *
     * @param type
     * @param startTime
     * @param endTime
     * @return
     */
    List<Statistics> selectZrrSixMorthCjInfo(@Param(value = "type") String type,
                                             @Param(value = "startTime") String startTime,
                                             @Param(value = "endTime") String endTime);

    /**
     * 法人6个月激励数量
     *
     * @param type
     * @param startTime
     * @param endTime
     * @return
     */
    List<Statistics> selectFrSixMorthJlInfo(@Param(value = "type") String type,
                                            @Param(value = "startTime") String startTime,
                                            @Param(value = "endTime") String endTime);

    /**
     * 自然人6个月激励数量
     *
     * @param type
     * @param startTime
     * @param endTime
     * @return
     */
    List<Statistics> selectZrrSixMorthJlInfo(@Param(value = "type") String type,
                                             @Param(value = "startTime") String startTime,
                                             @Param(value = "endTime") String endTime);

    /**
     * 法人应该响应次数
     *
     * @param type
     * @param startTime
     * @param endTime
     * @return
     */
    List<Statistics> selectFrDeptYgInfo(@Param(value = "type") String type,
                                        @Param(value = "startTime") String startTime,
                                        @Param(value = "endTime") String endTime);

    /**
     * 自然人应该响应次数
     *
     * @param type
     * @param startTime
     * @param endTime
     * @return
     */
    List<Statistics> selectZrrDeptYgInfo(@Param(value = "type") String type,
                                         @Param(value = "startTime") String startTime,
                                         @Param(value = "endTime") String endTime);

    /**
     * 法人实际响应次数
     *
     * @param startTime
     * @param endTime
     * @return
     */
    int selectFrDeptSjInfo(@Param(value = "startTime") String startTime,
                                        @Param(value = "endTime") String endTime,
                                        @Param(value = "deptIdList") List<Long> deptIdList);

    /**
     * 自然人实际响应次数
     *
     * @param startTime
     * @param endTime
     * @return
     */
    int selectZrrDeptSjInfo(@Param(value = "startTime") String startTime,
                                         @Param(value = "endTime") String endTime,
                                         @Param(value = "deptIdList") List<Long> deptIdList);

    /**
     * 联合惩戒发起总数法人
     *
     * @param startTime
     * @param endTime
     * @return
     */
    int selectFrCjZs(@Param(value = "type") String type,
                     @Param(value = "startTime") String startTime,
                     @Param(value = "endTime") String endTime);

    /**
     * 各个部门移出的数量统计法人
     *
     * @param startTime
     * @param endTime
     * @return
     */
    List<Statistics> selectFrCjYC(@Param(value = "type") String type,
                                  @Param(value = "startTime") String startTime,
                                  @Param(value = "endTime") String endTime);

    /**
     * 联合惩戒发起总数自然人
     *
     * @param startTime
     * @param endTime
     * @return
     */
    int selectZrrCjZs(@Param(value = "type") String type,
                      @Param(value = "startTime") String startTime,
                      @Param(value = "endTime") String endTime);

    /**
     * 各个部门移出的数量统计自然人
     *
     * @param startTime
     * @param endTime
     * @return
     */
    List<Statistics> selectZrrCjYC(@Param(value = "type") String type,
                                   @Param(value = "startTime") String startTime,
                                   @Param(value = "endTime") String endTime);

    /**
     * 联合奖惩事件中各规则引用的占比
     *
     * @param type
     * @param startTime
     * @param endTime
     * @return
     */
    List<StatisticsCount> selectJcgzDistribution(@Param(value = "type") String type,
                                                 @Param(value = "jclb") String jclb,
                                                 @Param(value = "startTime") String startTime,
                                                 @Param(value = "endTime") String endTime);

    /**
     * 信用主体的联合奖惩事件次数排名统计
     *
     * @param type
     * @param startTime
     * @param endTime
     * @return
     */
    List<StatisticsCount> selectJcCount(@Param(value = "type") String type,
                                        @Param(value = "jclb") String jclb,
                                        @Param(value = "startTime") String startTime,
                                        @Param(value = "endTime") String endTime);
}
